<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>图形组合</title>
    <script type="text/javascript">
        function load () {
            let c = document.getElementById('myCanvas');
            let context = c.getContext('2d');
        
            context.fillStyle = '#ff0000';
            context.fillRect(50, 25, 100, 100);
            context.fillStyle = '#00ff00';

            // 2个图形重合的地方
            /* source: 后画的部分
            *  destination: 先画的部分
            */

            // 后画的覆盖先画的部分
            context.globalCompositeOperation = 'source-over';
            // 画过的部分不可以画了
            context.globalCompositeOperation = 'destination-over';
            // 只能在画过的地方画
            context.globalCompositeOperation = 'source-atop';
            // 只显示后面画的地方，但是之前画的要显示
            context.globalCompositeOperation = 'destination-atop';
            // 只保留交集的地方，但是显示先画的地方
            context.globalCompositeOperation = 'source-in';
            // 只保留交集的地方，但是显示后画的地方
            context.globalCompositeOperation = 'destination-in';
            // 只显示后画的，并且删除交际的地方
            context.globalCompositeOperation = 'source-out';
            // 只显示先画的，并且删除交际的地方
            context.globalCompositeOperation = 'destination-out';
            // 除交际部分不显示，其他都显示
            context.globalCompositeOperation = 'xor';

            context.beginPath();
            context.arc(150, 125, 50, 0, Math.PI*2, true);
            context.closePath();
            context.fill();


        }

        window.onload  = function () {
            load();
        }
    </script>
</head>
<body>
    <canvas id="myCanvas" style="border: 1px solid #000000" width="800" height="450">
        你的浏览器不支持canvas元素！
    </canvas>
</body>
</html>